/**
 * 系统字典数据API
 * 用于获取班次、班别等字典数据
 */

import request from '@/utils/request'

/**
 * 获取班次字典数据（使用分页接口）
 * @returns {Promise<Object>} 班次列表
 */
export function getWorkShiftDict() {
   
  return request({
    url: '/system/dict-data/page',
    method: 'get',
    params: {
      pageNo: 1,
      pageSize: 100,
      dictType: 'sys_work_class'
    }
  }).then(response => {
    console.log('[getWorkShiftDict] 响应数据:', response)
    return transformPageDataToOptions(response)
  }).catch(error => {
    console.error('[getWorkShiftDict] 获取班次字典失败:', error)
    throw error
  })
}

/**
 * 获取班别字典数据（使用分页接口）
 * @returns {Promise<Object>} 班别列表
 */
export function getWorkClassDict() {
   
  return request({
    url: '/system/dict-data/page',
    method: 'get',
    params: {
      pageNo: 1,
      pageSize: 100,
      dictType: 'sys_work_shift'
    }
  }).then(response => {
    //console.log('[getWorkClassDict] 响应数据:', response)
    return transformPageDataToOptions(response)
  }).catch(error => {
    //console.error('[getWorkClassDict] 获取班别字典失败:', error)
    throw error
  })
}

/**
 * 获取指定类型的字典数据
 * @param {string} dictType - 字典类型
 * @returns {Promise<Object>} 字典数据
 */
export function getDictDataByType(dictType) {
  return request({
    url: '/system/dict-data/type',
    method: 'GET',
    params: { type: dictType }
  })
}

/**
 * 转换字典数据为下拉选项格式
 * @param {Array} dictData - 字典数据数组
 * @returns {Array} 下拉选项数组
 */
export function transformDictToOptions(dictData) {
  if (!Array.isArray(dictData)) return []
  
  return dictData.map(item => ({
    value: item.value,
    text: item.label
  }))
}

/**
 * 转换分页字典数据为下拉选项格式
 * @param {Object} response - 分页响应数据
 * @returns {Object} 转换后的响应数据
 */
export function transformPageDataToOptions(response) {
  
  if (response.code === 0 && response.data && response.data.list) {
    const options = response.data.list.map(item => ({
      value: item.value,
      label: item.label
    }))
    
    return {
      code: response.code,
      msg: response.msg,
      data: options
    }
  } else {
      return {
      code: response.code || 500,
      msg: response.msg || '数据格式错误',
      data: []
    }
  }
}

/**
 * 获取仓库字典数据（使用分页接口）
 * @returns {Promise<Object>} 仓库列表
 */
export function getWarehouseDict() {
    
  return request({
    url: '/system/dict-data/page',
    method: 'get',
    params: {
      pageNo: 1,
      pageSize: 100,
      dictType: 'wm_name'
    }
  }).then(response => {
    //console.log('[getWarehouseDict] 响应数据:', response)
    return transformPageDataToOptions(response)
  }).catch(error => {
    //console.error('[getWarehouseDict] 获取仓库字典失败:', error)
    throw error
  })
}

export default {
  getWorkShiftDict,
  getWorkClassDict,
  getWarehouseDict,
  getDictDataByType,
  transformDictToOptions,
  transformPageDataToOptions
}